<?php
/**
 * Кдасс единицы поискового запроса
 *
 */
class SearchResultItem implements ArrayAccess 
{
	/**
	 * Данные
	 *
	 * @var array
	 */
	private $_data;
	/**
	 * Конструктор
	 *
	 * @param array $item
	 * @param int $index
	 */
	public function __construct($item, $index)
	{
		if (0 == (int)$item['error'] && (int)$item['total'] > 0) {
			$this->_data['ids'] = array();
			$sIndexes = SearchIndexes::getInstance();
			$id = $sIndexes->getIndex($index) . '_id';
			$this->_data['total'] = $item['total_found'];
			$this->_data['index'] = $sIndexes->getIndex($index);
			$this->_data['model'] = $sIndexes->getIndexModel($sIndexes->getIndex($index));
			$this->_data['model_id'] = $sIndexes->getModelId($sIndexes->getIndex($index));
			$this->_data['fields'] = $item['fields'];
			if (is_array($item['words']))
				$this->_data['words'] = implode(' ', array_keys($item['words']));
			else 
				$this->_data['words'] = '';
			if (is_array($item['matches'])) {
				foreach ($item['matches'] as $match) {
					array_push($this->_data['ids'], $match['attrs'][$id]);
				}
			} else {
				$this->_data['total'] = 0;
			}
		} else {
			$this->_data['total'] = 0;
		}
	}
	/**
	 * @see интерфейс ArrayAccess
	 *
	 */
 	public function offsetSet($offset, $value) 
 	{
        $this->_data[$offset] = $value;
    }
    /**
	 * @see интерфейс ArrayAccess
	 *
	 */
    public function offsetExists($offset) 
    {
        return isset($this->_data[$offset]);
    }
    /**
	 * @see интерфейс ArrayAccess
	 *
	 */
    public function offsetUnset($offset) 
    {
        unset($this->_data[$offset]);
    }
    /**
	 * @see интерфейс ArrayAccess
	 *
	 */
    public function offsetGet($offset) 
    {
        return isset($this->_data[$offset]) ? $this->_data[$offset] : null;
    }
}